Реализация gRPC-метода GetErrorDirectory в auth-service
Разработка gRPC обработчика для извлечения активного справочника локализованных ошибок из PostgreSQL.
NoteКраткая карточка задачи
- Репозиторий / Компонент:
auth-service(Backend, домен SECURITY/IAD). - Контракт метода: gRPC
rpc GetErrorDirectory(DirectoryRequest) returns (DirectoryResponse); - Спецификация контракта: См. Раздел: Protobuf Контракт: GetErrorDirectory
- Статус: Готово к реализации
WarningОграничение публичной документации
В открытом доступе представлена демонстрационная версия задачи. В настоящей публичной документации отображены не все шаги, технические сценарии и приватные эндпоинты для системы цифровых симуляторов бизнес-процессов.
- Полная спецификация метода: Доступна только во внутреннем контуре разработки (Confluence / Swagger Enterprise).
- Для получения доступа: Обратитесь к системному аналитику или Product Owner вашей команды.
- Предварительные условия (Prerequisites):
- Убедиться, что DDL-миграция таблицы
auth_db.error_directory(IAD-MIGRATION-121) успешно применена к целевой БД PostgreSQL. - Сгенерировать серверные стабы (gRPC stubs) на основе актуального файла
auth.proto.
- Убедиться, что DDL-миграция таблицы
- Инструкция по шагам:
- На Шаге 3 (Валидация языка): Реализовать gRPC-хэндлер
GetErrorDirectory. Проверить входящий параметрlanguageпо белому списку поддерживаемых локалей системы (например,ru,en,kz). Если передан пустой или невалидный локализационный код, прерывать обработку с ошибкойgRPC Status: INVALID_ARGUMENT(HTTP статус 422 на шлюзе). - На Шаге 4 (Выборка данных): Написать оптимизированный SQL-запрос к созданной таблице
auth_db.error_directoryдля извлечения всех активных записей, удовлетворяющих условиюis_active = true. Добавить фильтрацию по версии мобильного приложения:min_app_version <= :app_version. - На Шаге 5-6 (Парсинг JSONB-полей): Итерируя результирующий набор строк, динамически вычитать из полей
message_translationsиresolution_hint_translationsтекстовые значения по ключу переданногоlanguage[2026-07-02]. Если перевод для запрашиваемого языка отсутствует в бинарном JSONB, устанавливать дефолтный английский (en) текст. - Сборка ответа: Смаппить распарсенные данные в массив Protobuf-структур
repeated ErrorItem errors, зафиксировать текущий UNIX-timestamp в полеsynced_atи вернуть шлюзу финальный ответDirectoryResponse.
- На Шаге 3 (Валидация языка): Реализовать gRPC-хэндлер